/* 编程题 自定义数组扩容规则，当已存储元素数量达到总容量的 80%时，扩容 1.5 倍。
例如，总容量是 10，当输入第 8 个元素时，数组进行扩容，容量从 10 变 15。
*/
import java.util.Arrays;
import java.util.Scanner;

public class task4{
  public static void main(String[] args) {
      //请用户定义数组初始长度
      Scanner sc = new Scanner(System.in);
      System.out.println("请自定义数组的初始长度：");
      int len = sc.nextInt();
      int[] arr1 = new int[len];
      //创建一个变量来记录已赋值的元素数量
      int cnt = 0;
      for (int i=0; i<len; i++) {
        //为元素赋值并记录数量
        System.out.println("请为第"+(i+1)+"个元素赋值：");
        int add_num = sc.nextInt();
        arr1[i] = add_num;
        cnt++;
        //判定容量是否达到80%
        if(cnt>=(int)(arr1.length*0.8)){
          //扩容1.5倍并打印容量
          System.out.print("数组开始扩容，");
          int[] arr2 = new int[(int)(arr1.length*1.5)];
          System.out.print("容量为：" + arr2.length);
          //用内循环将扩容后的新数组赋旧数组的值，也可以用Arraycopy
          for (int j=0; j<=i; j++) {
            arr2[j]=arr1[j];
          }
          arr1 = arr2;
          System.out.println();
          //赋值完毕后退出内循环
          break;
        }
      }
      //打印新的数组
      System.out.println("扩容后的数组为"+Arrays.toString(arr1));
  }
}
